package iteratorbind.base;

import iteratorbind.entity.MenuItem;

import java.util.Iterator;

/**
 * 数组菜单的迭代器
 * (练手 其实有增强for即可实现)
 *
 * @author yaojianfeng
 */
public class ArrayMenuIterator implements Iterator {
    MenuItem[] items;
    int position = 0;

    public ArrayMenuIterator(MenuItem[] items) {
        this.items = items;
    }


    /**
     * 判断数组是否还有下一个元素
     * @return 布尔值
     */
    @Override
    public boolean hasNext() {
        return position < items.length && items[position] != null;
    }

    /**
     * 获取下一个元素
     * @return 元素对象
     */
    @Override
    public Object next() {
        MenuItem menuItem = items[position];
        position = position + 1;
        return menuItem;
    }

    /**
     * 因为是使用的固定长度的数组,所以在remove()被调用的时候,
     * 我们将当前迭代的元素置换为null;
     */
    @Override
    public void remove() {
        if (!hasNext()){
            System.out.println("数组没有元素了");
            items[position-1] = null;
        }else {
            //每执行一次 就把当前迭代元素置为null
            items[position-1]=null;
        }
    }
}
